home *** CD-ROM | disk | FTP | other *** search
/ Multimedia Jumpstart / Multimedia Microsoft Jumpstart Version 1.1a (Microsoft).BIN / develpmt / sdk / vfw11.win / vfwdk / acmapp.h_ / acmapp.bin
Encoding:
Text File  |  1993-11-19  |  25.0 KB  |  923 lines

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  4. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  5. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  6. //  PURPOSE.
  7. //
  8. //  Copyright (c) 1992, 1993  Microsoft Corporation.  All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11. //
  12. //  acmapp.h
  13. //
  14. //  Description:
  15. //      This is a sample application that demonstrates how to use the 
  16. //      Audio Compression Manager API's in Windows. This application is
  17. //      also useful as an ACM CODEC driver test.
  18. //
  19. //
  20. //==========================================================================;
  21.  
  22. #ifndef _INC_ACMAPP
  23. #define _INC_ACMAPP                 // #defined if file has been included
  24.  
  25. #ifndef RC_INVOKED
  26. #pragma pack(1)                     // assume byte packing throughout
  27. #endif
  28.  
  29. #ifndef EXTERN_C
  30. #ifdef __cplusplus
  31.     #define EXTERN_C extern "C"
  32. #else
  33.     #define EXTERN_C extern 
  34. #endif
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C"                          // assume C declarations for C++
  39. {
  40. #endif
  41.  
  42.  
  43. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  44. //
  45. //  Application Version Information:
  46. //
  47. //
  48. //
  49. //
  50. //  NOTE! all string resources that will be used in app.rcv for the
  51. //  version resource information *MUST* have an explicit \0 terminator!
  52. //
  53. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  54.  
  55. #define APP_VERSION_MAJOR           1
  56. #define APP_VERSION_MINOR           0
  57. #define APP_VERSION_BUILD           0
  58. #ifdef UNICODE
  59. #define APP_VERSION_STRING_RC       "Version 1.00 (Unicode Enabled)\0"
  60. #else
  61. #define APP_VERSION_STRING_RC       "Version 1.00\0"
  62. #endif
  63.  
  64. #ifdef WIN32
  65. #define APP_VERSION_NAME_RC         "acmapp32.exe\0"
  66. #else
  67. #define APP_VERSION_NAME_RC         "acmapp16.exe\0"
  68. #endif
  69. #define APP_VERSION_BYLINE_RC       "\0"
  70. #define APP_VERSION_COMPANYNAME_RC  "Microsoft Corporation\0"
  71. #define APP_VERSION_COPYRIGHT_RC    "Copyright \251 Microsoft Corp. 1992-1993\0"
  72.  
  73. #ifdef WIN32
  74. #if (defined(_X86_)) || (defined(i386))
  75. #define APP_VERSION_PRODUCTNAME_RC  "Microsoft Windows NT Sample Application (i386)\0"
  76. #endif
  77. #if (defined(_MIPS_)) || (defined(MIPS))
  78. #define APP_VERSION_PRODUCTNAME_RC  "Microsoft Windows NT Sample Application (MIPS)\0"
  79. #endif
  80. #if (defined(_ALPHA_)) || (defined(ALPHA))
  81. #define APP_VERSION_PRODUCTNAME_RC  "Microsoft Windows NT Sample Application (Alpha)\0"
  82. #endif
  83. #ifndef APP_VERSION_PRODUCTNAME_RC
  84. #define APP_VERSION_PRODUCTNAME_RC  "Microsoft Windows NT Sample Application\0"
  85. #endif
  86. #else
  87. #define APP_VERSION_PRODUCTNAME_RC  "Microsoft Windows Sample Application\0"
  88. #endif
  89.  
  90. #ifdef DEBUG
  91. #define APP_VERSION_DESCRIPTION_RC  "Microsoft ACM Sample Application (debug)\0"
  92. #else
  93. #define APP_VERSION_DESCRIPTION_RC  "Microsoft ACM Sample Application\0"
  94. #endif
  95.  
  96.  
  97. //
  98. //  Unicode versions (if UNICODE is defined)... the resource compiler
  99. //  cannot deal with the TEXT() macro.
  100. //
  101. #define APP_VERSION_STRING          TEXT(APP_VERSION_STRING_RC)
  102. #define APP_VERSION_NAME            TEXT(APP_VERSION_NAME_RC)
  103. #define APP_VERSION_BYLINE          TEXT(APP_VERSION_BYLINE_RC)
  104. #define APP_VERSION_COMPANYNAME     TEXT(APP_VERSION_COMPANYNAME_RC)
  105. #define APP_VERSION_COPYRIGHT       TEXT(APP_VERSION_COPYRIGHT_RC)
  106. #define APP_VERSION_PRODUCTNAME     TEXT(APP_VERSION_PRODUCTNAME_RC)
  107. #define APP_VERSION_DESCRIPTION     TEXT(APP_VERSION_DESCRIPTION_RC)
  108.  
  109.  
  110. //
  111. //
  112. //
  113. #ifndef SIZEOF_WAVEFORMATEX
  114. #define SIZEOF_WAVEFORMATEX(pwfx)   ((WAVE_FORMAT_PCM==(pwfx)->wFormatTag)?sizeof(PCMWAVEFORMAT):(sizeof(WAVEFORMATEX)+(pwfx)->cbSize))
  115. #endif
  116.  
  117.  
  118. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  119. //
  120. //  misc defines for misc sizes and things...
  121. //
  122. //
  123. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  124.  
  125. //
  126. //  bilingual. this allows the same identifier to be used in resource files
  127. //  and code without having to decorate the id in your code.
  128. //
  129. #ifdef RC_INVOKED
  130.     #define RCID(id)    id
  131. #else
  132.     #define RCID(id)    MAKEINTRESOURCE(id)
  133. #endif
  134.  
  135.  
  136. //
  137. //  misc. defines
  138. //
  139. #define APP_MAX_APP_NAME_CHARS      30
  140. #define APP_MAX_APP_NAME_BYTES      (APP_MAX_APP_NAME_CHARS * sizeof(TCHAR))
  141. #define APP_MAX_STRING_RC_CHARS     512
  142. #define APP_MAX_STRING_RC_BYTES     (APP_MAX_STRING_RC_CHARS * sizeof(TCHAR))
  143. #define APP_MAX_STRING_ERROR_CHARS  512
  144. #define APP_MAX_STRING_ERROR_BYTES  (APP_MAX_STRING_ERROR_CHARS * sizeof(TCHAR))
  145.  
  146. #define APP_MAX_STRING_CHARS        128
  147. #define APP_MAX_STRING_BYTES        (APP_MAX_STRING_CHARS * sizeof(TCHAR))
  148. #define APP_MAX_NUMBER_CHARS        144
  149. #define APP_MAX_NUMBER_BYTES        (APP_MAX_NUMBER_CHARS * sizeof(TCHAR))
  150.  
  151. #define APP_MAX_FILE_PATH_CHARS     144
  152. #define APP_MAX_FILE_PATH_BYTES     (APP_MAX_FILE_PATH_CHARS * sizeof(TCHAR))
  153. #define APP_MAX_FILE_TITLE_CHARS    16
  154. #define APP_MAX_FILE_TITLE_BYTES    (APP_MAX_FILE_TITLE_CHARS * sizeof(TCHAR))
  155.  
  156. #define APP_MAX_STRING_INT_CHARS    18
  157. #define APP_MAX_STRING_INT_BYTES    (APP_MAX_STRING_INT_CHARS * sizeof(TCHAR))
  158.  
  159. #define APP_MAX_EXT_DEFAULT_CHARS   4
  160. #define APP_MAX_EXT_DEFAULT_BYTES   (APP_MAX_EXT_DEFAULT_CHARS * sizeof(TCHAR))
  161. #define APP_MAX_EXT_FILTER_CHARS    256
  162. #define APP_MAX_EXT_FILTER_BYTES    (APP_MAX_EXT_FILTER_CHARS * sizeof(TCHAR))
  163.  
  164. #define APP_WINDOW_XOFFSET          CW_USEDEFAULT
  165. #define APP_WINDOW_YOFFSET          CW_USEDEFAULT
  166. #define APP_WINDOW_WIDTH            460             // CW_USEDEFAULT
  167. #define APP_WINDOW_HEIGHT           400             // CW_USEDEFAULT
  168.  
  169.  
  170. //
  171. //  resource defines...
  172. //
  173. #define ICON_APP                    RCID(10)
  174. #define ACCEL_APP                   RCID(15)
  175.  
  176.  
  177. //
  178. //  the application menu...
  179. //
  180. //  NOTE! for our Edit menu, we use the following defines from windows.h--
  181. //  so don't reuse these defines for menu items!
  182. //
  183. //      #define WM_CUT      0x0300
  184. //      #define WM_COPY     0x0301
  185. //      #define WM_PASTE    0x0302
  186. //      #define WM_CLEAR    0x0303
  187. //      #define WM_UNDO     0x0304
  188. //
  189. #define MENU_APP                        RCID(20)
  190. #define APP_MENU_ITEM_FILE              0
  191. #define IDM_FILE_NEW                    1100
  192. #define IDM_FILE_OPEN                   1101
  193. #define IDM_FILE_SAVE                   1102
  194. #define IDM_FILE_SAVEAS                 1103
  195. #define IDM_FILE_SNDPLAYSOUND_PLAY      1104
  196. #define IDM_FILE_SNDPLAYSOUND_STOP      1105
  197. #define IDM_FILE_CONVERT                1106
  198. #define IDM_FILE_ABOUT                  1109
  199. #define IDM_FILE_EXIT                   1110
  200.  
  201. #define APP_MENU_ITEM_EDIT              1
  202. #define IDM_EDIT_SELECTALL              1200
  203.  
  204. #define APP_MENU_ITEM_VIEW              2
  205. #define IDM_VIEW_SYSTEMINFO             1300
  206. #define IDM_VIEW_ACM_DRIVERS            1301
  207.  
  208. #define APP_MENU_ITEM_PLAYER            3
  209. #define IDM_PLAYRECORD                  1400
  210.  
  211. #define APP_MENU_ITEM_OPTIONS           4
  212. #define IDM_OPTIONS_WAVEINDEVICE        1500
  213. #define IDM_OPTIONS_WAVEOUTDEVICE       1501
  214. #define IDM_OPTIONS_AUTOOPEN            1505
  215. #define IDM_OPTIONS_DEBUGLOG            1506
  216. #define IDM_OPTIONS_FONT                1509
  217.  
  218. #define IDM_UPDATE                      1600
  219.  
  220.  
  221. //
  222. //  the main window control id's...
  223. //
  224. #define IDD_ACMAPP_EDIT_DISPLAY                 200
  225.  
  226.  
  227. //
  228. //  misc dlg boxes...
  229. //
  230. #define DLG_ABOUT                               RCID(50)
  231. #define IDD_ABOUT_VERSION_OS                    100
  232. #define IDD_ABOUT_VERSION_PLATFORM              101
  233.  
  234. #define DLG_AADRAGDROP                          RCID(55)
  235.  
  236. #define DLG_AADETAILS                           RCID(70)
  237. #define IDD_AADETAILS_EDIT_DETAILS              100
  238.  
  239. #define DLG_AADRIVERS                           RCID(75)
  240. #define IDD_AADRIVERS_STATIC_POSITION           100
  241. #define IDD_AADRIVERS_LIST_DRIVERS              101
  242. #define IDD_AADRIVERS_BTN_DETAILS               102
  243. #define IDD_AADRIVERS_BTN_FORMATS               103
  244. #define IDD_AADRIVERS_BTN_FILTERS               104
  245. #define IDD_AADRIVERS_BTN_ABOUT                 105
  246. #define IDD_AADRIVERS_BTN_CONFIG                106
  247. #define IDD_AADRIVERS_BTN_ABLE                  107
  248. #define IDD_AADRIVERS_BTN_TOTOP                 108
  249.  
  250. #define DLG_AADRIVERFORMATS                     RCID(80)
  251. #define IDD_AADRIVERFORMATS_STATIC_POSITION     100
  252. #define IDD_AADRIVERFORMATS_LIST_FORMATS        101
  253. #define IDD_AADRIVERFORMATS_BTN_DETAILS         102
  254.  
  255.  
  256. #define DLG_AAWAVEDEVICE                        RCID(85)
  257. #define IDD_AAWAVEDEVICE_COMBO_DEVICE           100
  258. #define IDD_AAWAVEDEVICE_EDIT_CAPABILITIES      101
  259.  
  260.  
  261. #define DLG_AACHOOSER                           RCID(90)
  262. #define IDD_AACHOOSER_TXT_FILE_INPUT            100
  263. #define IDD_AACHOOSER_TXT_FORMAT_INPUT          101
  264. #define IDD_AACHOOSER_EDIT_FILE_OUTPUT          110
  265. #define IDD_AACHOOSER_BTN_BROWSE                111
  266. #define IDD_AACHOOSER_COMBO_DRIVER              120
  267. #define IDD_AACHOOSER_BTN_PROPERTIES            121
  268. #define IDD_AACHOOSER_TXT_FORMAT                130
  269. #define IDD_AACHOOSER_BTN_FORMAT                131
  270. #define IDD_AACHOOSER_BTN_FORMAT_OPTIONS        132
  271. #define IDD_AACHOOSER_CHECK_FILTER              140
  272. #define IDD_AACHOOSER_TXT_FILTER                141
  273. #define IDD_AACHOOSER_BTN_FILTER                142
  274. #define IDD_AACHOOSER_BTN_FILTER_OPTIONS        143
  275. #define IDD_AACHOOSER_CHECK_NONREALTIME         150
  276. #define IDD_AACHOOSER_CHECK_ASYNC               151
  277. #define IDD_AACHOOSER_TXT_TIME                  160
  278. #define IDD_AACHOOSER_SCROLL_TIME               161
  279. #define IDD_AACHOOSER_EDIT_DETAILS              170
  280.  
  281.  
  282. #define DLG_AAFORMATENUM                        RCID(91)
  283. #define IDD_AAFORMATENUM_CHECK_CONVERT          100
  284. #define IDD_AAFORMATENUM_CHECK_SUGGEST          101
  285. #define IDD_AAFORMATENUM_CHECK_HARDWARE         102
  286. #define IDD_AAFORMATENUM_CHECK_INPUT            103
  287. #define IDD_AAFORMATENUM_CHECK_OUTPUT           104
  288. #define IDD_AAFORMATENUM_CHECK_WFORMATTAG       105
  289. #define IDD_AAFORMATENUM_EDIT_WFORMATTAG        106
  290. #define IDD_AAFORMATENUM_CHECK_NCHANNELS        107
  291. #define IDD_AAFORMATENUM_EDIT_NCHANNELS         108
  292. #define IDD_AAFORMATENUM_CHECK_NSAMPLESPERSEC   109
  293. #define IDD_AAFORMATENUM_EDIT_NSAMPLESPERSEC    110
  294. #define IDD_AAFORMATENUM_CHECK_WBITSPERSAMPLE   111
  295. #define IDD_AAFORMATENUM_EDIT_WBITSPERSAMPLE    112
  296.  
  297. #define DLG_AAFILTERENUM                        RCID(92)
  298. #define IDD_AAFILTERENUM_CHECK_DWFILTERTAG      100
  299. #define IDD_AAFILTERENUM_EDIT_DWFILTERTAG       101
  300.  
  301.  
  302. #define DLG_AAPROPERTIES                        RCID(93)
  303. #define IDD_AAPROPERTIES_COMBO_SOURCE           100
  304. #define IDD_AAPROPERTIES_BTN_SOURCE             101
  305. #define IDD_AAPROPERTIES_COMBO_DESTINATION      102
  306. #define IDD_AAPROPERTIES_BTN_DESTINATION        103
  307.  
  308.  
  309. #define DLG_AAFORMATSTYLE                               RCID(94)
  310. #define IDD_AAFORMATSTYLE_CHECK_SHOWHELP                100
  311. #define IDD_AAFORMATSTYLE_CHECK_ENABLEHOOK              101
  312. #define IDD_AAFORMATSTYLE_CHECK_ENABLETEMPLATE          102
  313. #define IDD_AAFORMATSTYLE_CHECK_ENABLETEMPLATEHANDLE    103
  314. #define IDD_AAFORMATSTYLE_CHECK_INITTOWFXSTRUCT         104
  315.  
  316. #define DLG_AAFILTERSTYLE                               RCID(95)
  317. #define IDD_AAFILTERSTYLE_CHECK_SHOWHELP                100
  318. #define IDD_AAFILTERSTYLE_CHECK_ENABLEHOOK              101
  319. #define IDD_AAFILTERSTYLE_CHECK_ENABLETEMPLATE          102
  320. #define IDD_AAFILTERSTYLE_CHECK_ENABLETEMPLATEHANDLE    103
  321. #define IDD_AAFILTERSTYLE_CHECK_INITTOFILTERSTRUCT      104
  322.  
  323.  
  324. #define DLG_AAFORMATCHOOSE_TEMPLATE             RCID(98)
  325. #define DLG_AAFILTERCHOOSE_TEMPLATE             RCID(99)
  326.  
  327.  
  328.  
  329. #define DLG_AACONVERT                           RCID(100)
  330. #define IDD_AACONVERT_TXT_INFILEPATH            100
  331. #define IDD_AACONVERT_TXT_OUTFILEPATH           101
  332. #define IDD_AACONVERT_TXT_STATUS                102
  333.  
  334. #define DLG_AAPLAYRECORD                        RCID(110)
  335. #define IDD_AAPLAYRECORD_BTN_PLAY               100
  336. #define IDD_AAPLAYRECORD_BTN_PAUSE              101
  337. #define IDD_AAPLAYRECORD_BTN_STOP               102
  338. #define IDD_AAPLAYRECORD_BTN_START              103
  339. #define IDD_AAPLAYRECORD_BTN_END                104
  340. #define IDD_AAPLAYRECORD_BTN_RECORD             105
  341. #define IDD_AAPLAYRECORD_SCROLL_POSITION        110
  342. #define IDD_AAPLAYRECORD_TXT_POSITION           115
  343. #define IDD_AAPLAYRECORD_EDIT_COMMAND           120
  344. #define IDD_AAPLAYRECORD_EDIT_RESULT            121
  345.  
  346.  
  347.  
  348.  
  349. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  350. //
  351. //  string resources
  352. //
  353. //
  354. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  355.  
  356. #define IDS_APP_NAME                100
  357. #define IDS_FILE_UNTITLED           101
  358.  
  359. #define IDS_OFN_EXT_DEF             125
  360. #define IDS_OFN_EXT_FILTER          126
  361.  
  362. #define IDS_ERROR_ACM_NOT_PRESENT   500
  363. #define IDS_ERROR_ACM_TOO_OLD       501
  364.  
  365. #define IDS_ERROR_OPEN_FAILED       550
  366.  
  367.  
  368.  
  369. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  370. //
  371. //
  372. //
  373. //
  374. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  375.  
  376. //
  377. //
  378. //
  379. //
  380. typedef struct tACMAPPFILEDESC
  381. {
  382.     DWORD           fdwState;
  383.  
  384.     TCHAR           szFileTitle[APP_MAX_FILE_TITLE_CHARS];
  385.     TCHAR           szFilePath[APP_MAX_FILE_PATH_CHARS];
  386.     
  387.     DWORD           cbFileSize;
  388.     UINT            uDosChangeDate;
  389.     UINT            uDosChangeTime;
  390.     DWORD           fdwFileAttributes;
  391.  
  392.     LPWAVEFORMATEX  pwfx;
  393.     UINT            cbwfx;
  394.  
  395.     DWORD           dwDataBytes;
  396.     DWORD           dwDataSamples;
  397.  
  398. } ACMAPPFILEDESC, *PACMAPPFILEDESC;
  399.  
  400. //
  401. //  ACMAPPINST.fdwState flags
  402. //
  403. #define ACMAPPFILEDESC_STATEF_MODIFIED  0x80000000L
  404.  
  405.  
  406.  
  407.  
  408. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  409. //
  410. //  APPINIT.C -- Public helper functions
  411. //
  412. //
  413. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  414.  
  415. LRESULT FNGLOBAL AppCreate
  416. (
  417.     HWND                    hwnd,
  418.     LPCREATESTRUCT          pcs
  419. );
  420.  
  421. LRESULT FNGLOBAL AppQueryEndSession
  422. (
  423.     HWND                    hwnd
  424. );
  425.  
  426. LRESULT FNGLOBAL AppEndSession
  427. (
  428.     HWND                    hwnd,
  429.     BOOL                    fEndSession
  430. );
  431.  
  432. LRESULT FNGLOBAL AppClose
  433. (
  434.     HWND                    hwnd
  435. );
  436.  
  437. HWND FNGLOBAL AppInit
  438. (
  439.     HINSTANCE               hinst,
  440.     HINSTANCE               hinstPrev,
  441.     LPTSTR                  pszCmdLine,
  442.     int                     nCmdShow
  443. );
  444.  
  445. int FNGLOBAL AppExit
  446. (
  447.     HINSTANCE               hinst,
  448.     int                     nResult
  449. );
  450.  
  451.  
  452. LRESULT FNGLOBAL AppGetWindowsVersion
  453. (
  454.     PTSTR                   pszEnvironment,
  455.     PTSTR                   pszPlatform
  456. );
  457.  
  458. LRESULT FNGLOBAL AppWinIniChange
  459. (
  460.     HWND                    hwnd,
  461.     LPCTSTR                 pszSection
  462. );
  463.  
  464. HFONT FNGLOBAL AppChooseFont
  465. (
  466.     HWND                    hwnd,
  467.     HFONT                   hFont,
  468.     PLOGFONT                plf
  469. );
  470.  
  471.  
  472. BOOL FNEXPORT AboutDlgProc
  473. (
  474.     HWND                    hwnd,
  475.     UINT                    uMsg,
  476.     WPARAM                  wParam,
  477.     LPARAM                  lParam
  478. );
  479.  
  480.  
  481. BOOL FNGLOBAL AppProfileWriteBytes
  482. (
  483.     PTSTR                   pszSection,
  484.     PTSTR                   pszKey,
  485.     LPBYTE                  pbStruct,
  486.     UINT                    cbStruct
  487. );
  488.  
  489. BOOL FNGLOBAL AppProfileReadBytes
  490. (
  491.     PTSTR                   pszSection,
  492.     PTSTR                   pszKey,
  493.     LPBYTE                  pbStruct,
  494.     UINT                    cbStruct
  495. );
  496.  
  497.  
  498. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  499. //
  500. //  APP.C -- Public helper functions
  501. //
  502. //
  503. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  504.  
  505. int FNCGLOBAL AppMsgBox
  506. (
  507.     HWND                    hwnd,
  508.     UINT                    fuStyle,
  509.     PTSTR                   pszFormat,
  510.     ...
  511. );
  512.  
  513. int FNCGLOBAL AppMsgBoxId
  514. (
  515.     HWND                    hwnd,
  516.     UINT                    fuStyle,
  517.     UINT                    uIdsFormat,
  518.     ...
  519. );
  520.  
  521. void FNGLOBAL AppHourGlass
  522. (
  523.     BOOL                    fHourGlass
  524. );
  525.  
  526. BOOL FNGLOBAL AppYield
  527. (
  528.     HWND                    hwnd,
  529.     BOOL                    fIsDialog
  530. );
  531.  
  532. BOOL FNGLOBAL AppTitle
  533. (
  534.     HWND                    hwnd,
  535.     PTSTR                   pszFileTitle
  536. );
  537.  
  538. int FNCGLOBAL AppSetWindowText
  539. (
  540.     HWND                    hwnd,
  541.     PTSTR                   pszFormat,
  542.     ...
  543. );
  544.  
  545. int FNCGLOBAL AppSetWindowTextId
  546. (
  547.     HWND                    hwnd,
  548.     UINT                    uIdsFormat,
  549.     ...
  550. );
  551.  
  552. BOOL FNGLOBAL AppFormatBigNumber
  553. (
  554.     LPTSTR                  pszNumber,
  555.     DWORD                   dw
  556. );
  557.  
  558. BOOL FNGLOBAL AppFormatDosDateTime
  559. (
  560.     LPTSTR                  pszDateTime,
  561.     UINT                    uDosDate,
  562.     UINT                    uDosTime
  563. );
  564.  
  565. void FNCGLOBAL AcmAppDebugLog
  566. (
  567.     PTSTR                   pszFormat,
  568.     ...
  569. );
  570.  
  571. int FNCGLOBAL MEditPrintF
  572. (
  573.     HWND                    hedit,
  574.     PTSTR                   pszFormat,
  575.     ...
  576. );
  577.  
  578. BOOL FNGLOBAL AppGetFileTitle
  579. (
  580.     PTSTR                   pszFilePath,
  581.     PTSTR                   pszFileTitle
  582. );
  583.  
  584. BOOL FNGLOBAL AppGetFileName
  585. (
  586.     HWND                    hwnd,
  587.     PTSTR                   pszFilePath,
  588.     PTSTR                   pszFileTitle,
  589.     UINT                    fuFlags
  590. );
  591.  
  592. BOOL FNGLOBAL AppFileNew
  593. (
  594.     HWND                    hwnd,
  595.     PACMAPPFILEDESC         paafd,
  596.     BOOL                    fCreate
  597. );
  598.  
  599.  
  600. //
  601. //  fuFlags for AppGetFileName()...
  602. //
  603. #define APP_GETFILENAMEF_OPEN       0x0000
  604. #define APP_GETFILENAMEF_SAVE       0x0001
  605.  
  606.  
  607. BOOL FNGLOBAL AppFileSave
  608. (
  609.     HWND                    hwnd,
  610.     PACMAPPFILEDESC         paafd,
  611.     BOOL                    fSaveAs
  612. );
  613.  
  614.  
  615. LRESULT FNEXPORT AppWndProc
  616. (
  617.     HWND                    hwnd,
  618.     UINT                    uMsg,
  619.     WPARAM                  wParam,
  620.     LPARAM                  lParam
  621. );
  622.  
  623.  
  624.  
  625. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  626. //
  627. //  file manipulation functions
  628. //
  629. //
  630. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  631.  
  632. //
  633. //
  634. //
  635. //
  636. #ifndef WIN32
  637. DWORD FNGLOBAL DosGetFileAttributes
  638. (
  639.     LPTSTR                  pszFilePath
  640. );
  641.  
  642. #ifndef FILE_ATTRIBUTE_READONLY
  643. #define FILE_ATTRIBUTE_READONLY         0x00000001  
  644. #define FILE_ATTRIBUTE_HIDDEN           0x00000002  
  645. #define FILE_ATTRIBUTE_SYSTEM           0x00000004  
  646. #define FILE_ATTRIBUTE_DIRECTORY        0x00000010  
  647. #define FILE_ATTRIBUTE_ARCHIVE          0x00000020  
  648. #define FILE_ATTRIBUTE_NORMAL           0x00000080  
  649. #define FILE_ATTRIBUTE_TEMPORARY        0x00000100  
  650. #define FILE_ATTRIBUTE_ATOMIC_WRITE     0x00000200  
  651. #define FILE_ATTRIBUTE_XACTION_WRITE    0x00000400  
  652. #endif
  653. #endif
  654.  
  655. MMRESULT FNGLOBAL AcmAppFormatChoose
  656. (
  657.     HWND                    hwnd,
  658.     LPWAVEFORMATEX          pwfx,
  659.     UINT                    cbwfx,
  660.     DWORD                   fdwStyle
  661. );
  662.  
  663. BOOL FNGLOBAL AcmAppFileSaveModified
  664. (
  665.     HWND                    hwnd,
  666.     PACMAPPFILEDESC         paafd
  667. );
  668.  
  669. BOOL FNGLOBAL AcmAppFileNew
  670. (
  671.     HWND                    hwnd,
  672.     PACMAPPFILEDESC         paafd
  673. );
  674.  
  675. BOOL FNGLOBAL AcmAppFileOpen
  676. (
  677.     HWND                    hwnd,
  678.     PACMAPPFILEDESC         paafd
  679. );
  680.  
  681. BOOL FNGLOBAL AcmAppFileSave
  682. (
  683.     HWND                    hwnd,
  684.     PACMAPPFILEDESC         paafd,
  685.     PTSTR                   pszFilePath,
  686.     PTSTR                   pszFileTitle,
  687.     UINT                    fuSave
  688. );
  689.  
  690.  
  691.  
  692. BOOL FNGLOBAL AcmAppFileConvert
  693. (
  694.     HWND                    hwnd,
  695.     PACMAPPFILEDESC         paafd
  696. );
  697.  
  698. BOOL FNGLOBAL AcmAppFileFilter
  699. (
  700.     HWND                    hwnd,
  701.     PACMAPPFILEDESC         paafd
  702. );
  703.  
  704.  
  705. BOOL FNGLOBAL AcmAppDisplayFileProperties
  706. (
  707.     HWND                    hedit,
  708.     PACMAPPFILEDESC         paafd
  709. );
  710.  
  711.  
  712.  
  713. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  714. //
  715. //
  716. //
  717. //
  718. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  719.  
  720. BOOL FNEXPORT AcmAppDriversDlgProc
  721. (
  722.     HWND                    hwnd,
  723.     UINT                    uMsg,
  724.     WPARAM                  wParam,
  725.     LPARAM                  lParam
  726. );
  727.  
  728.  
  729. BOOL FNGLOBAL AcmAppGetFormatDescription
  730. (
  731.     LPWAVEFORMATEX          pwfx,
  732.     LPTSTR                  pszFormatTag,
  733.     LPTSTR                  pszFormat
  734. );
  735.  
  736. BOOL FNGLOBAL AcmAppGetFilterDescription
  737. (
  738.     LPWAVEFILTER            pwfltr,
  739.     LPTSTR                  pszFilterTag,
  740.     LPTSTR                  pszFilter
  741. );
  742.  
  743.  
  744. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  745. //
  746. //
  747. //
  748. //
  749. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  750.  
  751. BOOL FNEXPORT AcmAppSystemInfoDlgProc
  752. (
  753.     HWND                    hwnd,
  754.     UINT                    uMsg,
  755.     WPARAM                  wParam,
  756.     LPARAM                  lParam
  757. );
  758.  
  759.  
  760.  
  761.  
  762. BOOL FNEXPORT AcmAppPlayRecord
  763. (
  764.     HWND                    hwnd,
  765.     UINT                    uMsg,
  766.     WPARAM                  wParam,
  767.     LPARAM                  lParam
  768. );
  769.  
  770.  
  771. BOOL FNEXPORT AcmAppWaveDeviceDlgProc
  772. (
  773.     HWND                    hwnd,
  774.     UINT                    uMsg,
  775.     WPARAM                  wParam,
  776.     LPARAM                  lParam
  777. );
  778.  
  779.  
  780. BOOL FNGLOBAL AcmAppGetErrorString
  781. (
  782.     MMRESULT                mmr,
  783.     LPTSTR                  pszError
  784. );
  785.  
  786. //
  787. //
  788. //
  789. #define WM_ACMAPP_ACM_NOTIFY        (WM_USER + 100)
  790.  
  791.  
  792. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  793. //
  794. //  misc functions
  795. //
  796. //
  797. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  798.  
  799. BOOL FNGLOBAL AcmAppChooseFont
  800. (
  801.     HWND                    hwnd
  802. );
  803.  
  804.  
  805.  
  806. //
  807. //
  808. //
  809. //
  810. typedef struct tAACONVERTDESC
  811. {
  812.     HACMDRIVERID        hadid;
  813.     HACMDRIVER          had;
  814.     HACMSTREAM          has;
  815.     DWORD               fdwOpen;
  816.  
  817.     HMMIO               hmmioSrc;
  818.     HMMIO               hmmioDst;
  819.  
  820.     MMCKINFO            ckDst;
  821.     MMCKINFO            ckDstRIFF;
  822.  
  823.     UINT                uBufferTimePerConvert;
  824.  
  825.     TCHAR               szFilePathSrc[APP_MAX_FILE_PATH_CHARS];
  826.     LPWAVEFORMATEX      pwfxSrc;
  827.     LPBYTE              pbSrc;
  828.     DWORD               dwSrcSamples;
  829.     DWORD               cbSrcData;
  830.     DWORD               cbSrcReadSize;
  831.     TCHAR               szSrcFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  832.     TCHAR               szSrcFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  833.  
  834.     TCHAR               szFilePathDst[APP_MAX_FILE_PATH_CHARS];
  835.     LPWAVEFORMATEX      pwfxDst;
  836.     LPBYTE              pbDst;
  837.     DWORD               cbDstBufSize;
  838.     TCHAR               szDstFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
  839.     TCHAR               szDstFormat[ACMFORMATDETAILS_FORMAT_CHARS];
  840.  
  841.     BOOL                fApplyFilter;
  842.     LPWAVEFILTER        pwfltr;
  843.     TCHAR               szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  844.     TCHAR               szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  845.  
  846.     ACMSTREAMHEADER     ash;
  847.  
  848.     DWORD               cTotalConverts;
  849.     DWORD               dwTimeTotal;
  850.     DWORD               dwTimeShortest;
  851.     DWORD               dwShortestConvert;
  852.     DWORD               dwTimeLongest;
  853.     DWORD               dwLongestConvert;
  854.  
  855. } AACONVERTDESC, *PAACONVERTDESC;
  856.  
  857.  
  858.  
  859. BOOL FNEXPORT AcmAppDlgProcChooser
  860. (
  861.     HWND                    hwnd,
  862.     UINT                    uMsg,
  863.     WPARAM                  wParam,
  864.     LPARAM                  lParam
  865. );
  866.  
  867.  
  868.  
  869. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  870. //
  871. //  global variables, etc.
  872. //
  873. //
  874. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  875.  
  876. //
  877. //  flags for gfuAppOptions
  878. //
  879. #define APP_OPTIONSF_AUTOOPEN   0x0001
  880. #define APP_OPTIONSF_DEBUGLOG   0x0004
  881.  
  882. extern HINSTANCE            ghinst;
  883. extern BOOL                 gfAcmAvailable;
  884. extern UINT                 gfuAppOptions;
  885. extern HFONT                ghfontApp;
  886. extern HACMDRIVERID         ghadidNotify;
  887.  
  888. extern UINT                 guWaveInId;
  889. extern UINT                 guWaveOutId;
  890.  
  891. extern TCHAR                gszNull[];
  892. extern TCHAR                gszAppProfile[];
  893. extern TCHAR                gszYes[];
  894. extern TCHAR                gszNo[];
  895.  
  896. extern TCHAR                gszAppName[APP_MAX_APP_NAME_CHARS];
  897. extern TCHAR                gszFileUntitled[APP_MAX_FILE_TITLE_CHARS];
  898.  
  899. extern TCHAR                gszInitialDirOpen[APP_MAX_FILE_PATH_CHARS];
  900. extern TCHAR                gszInitialDirSave[APP_MAX_FILE_PATH_CHARS];
  901.  
  902. extern TCHAR                gszLastSaveFile[APP_MAX_FILE_PATH_CHARS];
  903.  
  904.  
  905. extern ACMAPPFILEDESC       gaafd;
  906.  
  907.  
  908. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; 
  909. //
  910. //
  911. //
  912. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; 
  913.  
  914. #ifndef RC_INVOKED
  915. #pragma pack()                      // revert to default packing
  916. #endif
  917.  
  918. #ifdef __cplusplus
  919. }                                   // end of extern "C" { 
  920. #endif
  921.  
  922. #endif // _INC_ACMAPP
  923.